package com.oa.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.jboss.errai.bus.server.annotations.Service;
import org.springframework.transaction.annotation.Transactional;

import com.oa.base.BaseDao;
import com.oa.service.TrendService;
import com.oa.util.PageBean;

@Service("trendService")
@Transactional
public class TrendServiceImpl<T> implements TrendService {
	//通过注解把trendDao注入进来
	@Resource(name="trendDao")
	/**
	 * 分页查询
	 *  
	 * @param pageSize
	 *            每页显示多少记录
	 * @param currentPage
	 *            当前页
	 * @return 封装了分页信息的bean
	 */

	private BaseDao<T> baseDao;
	private PageBean<?> pageBean;

	@SuppressWarnings({ "unchecked", "rawtypes", "hiding" })
	public <T> PageBean<T> queryForPage(int pageSize, int page,
			T t) {
		// final String hql = "from "+obj;
		int allRow = baseDao.getAllRowCount(t);// 总记录数
		System.out.println(allRow + "大小");

		int totalPage = PageBean.countTatalPage(pageSize, allRow); // 总页数
		final int offset = PageBean.countOffset(pageSize, page); // 当前页开始记录
		final int length = pageSize; // 每页记录数
		final int currentPage = PageBean.countCurrentPage(page); // 当前页
		List list = baseDao.queryForPage(t, offset, length); //
		// 把分页信息保存到Bean当中
		PageBean<T> pageBean = new PageBean<>();
		pageBean.setPageSize(pageSize);
		pageBean.setCurrentPage(currentPage);
		pageBean.setAllRow(allRow);
		pageBean.setTotalPage(totalPage);
		// System.out.println("list.size()>>>>>" + list.size());
		pageBean.setList(list);
		pageBean.init();
		return pageBean;
	}

	public PageBean<?> getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean<?> pageBean) {
		this.pageBean = pageBean;
	}

	public BaseDao<T> getBaseDao() {
		return baseDao;
	}

	public void setBaseDao(BaseDao<T> baseDao) {
		this.baseDao = baseDao;
	}

	



}
